package com.turing.post.common.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;

/**
 * 菜单业务接口
 * 
 * @author zxppanda
 * 
 */
@Remote
@Local
public interface SysOpMenuDao {

	/**
	 * 根据主键查询菜单
	 * 
	 * @param menuId
	 *            菜单编号
	 * @return 菜单对象
	 */
	public SysOpMenu getSysOpMenuByMenuId(Integer menuId);

	/**
	 * 分页查询菜单列表
	 * 
	 * @param page
	 *            页码
	 * @return 菜单列表
	 */
	public List<SysOpMenu> getSysOpMenuList(String menuName, String menuType,
			Integer page);

	/**
	 * 查询菜单表记录条数
	 * 
	 * @return 记录数
	 */
	public BigInteger getSysOpMenuTotal(String menuName, String menuType);

	/**
	 * 根据菜单组编号查询菜单列表
	 * 
	 * @param superMenuId
	 *            菜单组编号
	 * @return 菜单列表
	 */
	public List<SysOpMenu> getSysOpMenuListBySuperMenuId(Integer superMenuId);

	/**
	 * 根据登录用户角色编号查询菜单列表
	 * 
	 * @param operId
	 *            角色编号
	 * @return 菜单列表
	 */
	public List<LeftMenu> getSysOpMenuListByRoleId(String roleIds);

	/**
	 * 新增菜单
	 * 
	 * @param sysOpMenu
	 *            菜单对象
	 * @throws PCPSApplicationException
	 */
	public void insertSysOpMenu(SysOpMenu sysOpMenu)
			throws PCPSApplicationException;

	/**
	 * @查询主键最大值
	 * @return
	 */
	public BigInteger getMaxMenuId();

	/**
	 * 修改菜单
	 * 
	 * @param sysOpMenu
	 *            菜单对象
	 * @throws PCPSApplicationException
	 */
	public void updateSysOpMenu(SysOpMenu sysOpMenu)
			throws PCPSApplicationException;

	/**
	 * 删除菜单
	 * 
	 * @param menuId
	 * @throws PCPSApplicationException
	 */
	public void deleteSysOpMenu(Integer menuId) throws PCPSApplicationException;

	/**
	 * 新增菜单时下拉选择上级菜单目录
	 * 
	 * @param menuType
	 *            菜单类型
	 * @return 菜单列表
	 */
	public List<SysOpMenu> getSysOpMenuByMenuType(Integer menuType);

	/**
	 * 根据登录用户角色子系统编号查询菜单组
	 * 
	 * @param roleId
	 *            角色编号
	 * @param menuGrpId
	 *            菜单组编号
	 * @return 左侧菜单列表
	 */
	public List<LeftParentMenu> getSysOpMenuListByRoleIdAndMenuGrpId(
			String roleIds, BigInteger menuGrpId);
}
